﻿#region copyright
//<copyright>
// Copyright(C) 2012 TrackerRealm Corporation
// This file is part of the open source project - Jazz. http://jazz.codeplex.com
// 
// Jazz is open software: you can redistribute it and/or modify it 
// under the terms of the GNU Affero General Public License (AGPL) as published by 
// the Free Software Foundation, version 3 of the License.
// 
// Jazz is distributed in the hope that it will be useful, 
// but WITHOUT ANY WARRANTY; without even the implied warranty 
// of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  
//  See the GNU Affero General Public License (AGPL) for more details.
// 
// You should have received a copy of the GNU General Public 
// License along with Jazz.  If not, see <http://www.gnu.org/licenses/>.
//
// REMOVAL OF THIS NOTICE IS VIOLATION OF THE COPYRIGHT. 
//</copyright>
#endregion
using System;
using System.Collections.Generic;
using System.Text;

namespace TrackerRealm.Jazz.Common
{
    /// <summary>
    /// Describes a storage unit data status with respect to the Nexus server.
    /// That is Pending, Confirmed or Conflict.
    /// This enumeration only is only valid within the client nexus.
    /// A '<see cref="TjStorageStatusType"/>' field is not stored in the Server Nexus.
    /// </summary>
    public enum jStorageStatusType
    {
        /// <summary>
        /// An object should never be in this state.
        /// This could be caused by corrupted data.
        /// Typically indicates some error occured in the restoration of a field.
        /// </summary>
        Unknown = 0,
        /// <summary>
        /// That the value of property has been changed but the nexus has not confirmed it.
        /// For a method this means the method is executing.
        /// </summary>
        Pending,
        /// <summary>
        /// That an object has had its schema upgraded, but not saved to server nexus.
        /// </summary>
        PendingUpgrade,
        /// <summary>
        /// This indicates that there is a problem with this object.
        /// </summary>
        Conflict,
        /// <summary>
        /// For a property it means that the value of property and the value is the same 
        /// at the time of the time of last synchronization.
        /// For a method this means that no execution is currently in progress.
        /// </summary>
        Confirmed,

    }
}
